Flextable final

Aula 15, M2

Carolina Musso

Sala de Situação - UnB

Esta semana

Aula 14

  • As funções if(), if_else() e case_when()

  • Pacote forcats

Aula 15 - Tabela

  • Mais sobre o pacote flextable: mesclar células e condicionamento

Leituras para aprofundamento

Dados de Hoje

  • Incrementando nosso código
paises <- c("Brazil", "Italy", "France", "Uruguay")

letalidade <- dados_covid %>% 
  filter(Country %in% paises, 
         New_cases>0) %>% 
  separate(Date_reported, c("Ano", "Mês", "Dia")) %>% 
  filter(Ano=="2023"|Ano=="2022") %>% 
  mutate(Country=case_when(
    Country=="Brazil" ~ "Brasil",
    Country=="Italy" ~ "Itália",
    Country=="France" ~ "França",
    Country=="Uruguay" ~ "Uruguai")) %>% 
  mutate(letalidade_diaria = New_deaths/New_cases*100)%>% 
   mutate(Continente = ifelse(Country=="Brasil"|Country=="Uruguai",
                              "América do Sul", "Europa")) %>% 
  group_by( Ano, Continente, Country) %>% 
  summarise(letalidade_media = mean(letalidade_diaria), 
            desvio_padrao = sd(letalidade_diaria ),
            Casos_maximo = max(New_cases),
            Obitos_maximo = max(New_deaths)) %>% 
  ungroup() %>% 
  mutate_if(is.numeric, ~format(., big.mark=".", decimal.mark=",", digits=2)) 
  

 letalidade
# A tibble: 8 × 7
  Ano   Continente     Country letalidade_media desvio_padrao Casos_maximo
  <chr> <chr>          <chr>   <chr>            <chr>         <chr>       
1 2022  América do Sul Brasil  0,70             0,534         "  298.408" 
2 2022  América do Sul Uruguai 0,35             0,296         "   13.612" 
3 2022  Europa         França  0,17             0,091         "2.417.043" 
4 2022  Europa         Itália  0,31             0,185         "  228.123" 
5 2023  América do Sul Brasil  0,77             0,818         "   60.591" 
6 2023  América do Sul Uruguai 0,22             0,308         "    8.173" 
7 2023  Europa         França  0,66             0,261         "  151.707" 
8 2023  Europa         Itália  0,89             0,573         "   27.102" 
# ℹ 1 more variable: Obitos_maximo <chr>

flextable

flextable(letalidade)
Tab1

Editando com o que já sabemos

tab1 <- flextable( letalidade) %>% 
  autofit() %>% 
  align(align="r", part="all") %>% 
  align(align="c", j=c(1,2),  part="all") %>% 
  bold(part="header") %>% 
  bold(j=c(1,2)) %>% 
  bg(bg="lightgrey", j=1, part="all") %>% 
  bg(bg="grey", j=c(2,3), part="all") %>% 
  hline(i=c(2,4,6)) %>% 
  vline(j=c(1,2,3)) %>% 
  set_header_labels( 
  Country="País", 
  letalidade_media="Letalidade Média Diária",
  desvio_padrao="Desvio Padrão",
  Casos_maximo="Máximo de casos em 24h", 
  Obitos_maximo="Máximo de óbitos em 24h")
  
  
tab1

Tab2

Mesclando celulas

tab2 <- tab1 %>% 
  merge_v(j=c(1,2)) 

tab2
Tab3
  • Procure sobre a função fix_border_issues()

Coloração condicional

tab3 <- tab2 %>% 
  bg(i = ~ Country =="Brasil" ,  # nome da coluna original 
     j = c(6,7),
     bg="red")

tab3
Tab4

Coloração condicional

tab4 <- tab2_num  %>% 
 bg(i = ~ Casos_maximo >200000 ,  # nome da coluna original 
     bg="yellow") %>% 
  colformat_double(decimal.mark = ",",
                   digits = 2) %>% 
  colformat_int(big.mark = ".")

tab4
Tab3

COMENTÁRIOS

  • Tem que ser o nome original na base! Sugestão: deixe para mudar os nomes só no final

  • Vantagem: Não preciso dizer o número das linhas , ele vai atualizar baseado no valor do banco! Isso é mais reprodutível.

  • PARA CONDICIONAR SOBRE OS NÚMEROS, O R TEM QUE ESTAR RECONHECENDO COMO NUMÉRICO

    • Por isso removi o mutate_if() que haviamos feito no início da manipulação.
    • Há possibilidade de mudar isso na própria tabela.

Tarefa do fim do módulo

  • Entregar uma tabela em Word (.docx) criada com o flextable com uma base de dados do seu interesse. O código .Rmd deve ser entregue juntamente com a tabela gerada.

  • Sugiro não utilizar as mesmas bases que usamos aqui na aula, a não ser que faça uma abordagem muito diferentes das já feitas.

  • Para chegar na tabela, você deve usar funções de manipulações de dados de acordo como seu objetivo. Deve conter pelo menos alguma manipulação com o filter() e com o mutate(), no mínimo.

  • Deve conter pelo menos 3 funções de formatação da tabela.

  • Defafio: usar funções novas de formatação ou manipulação não apresentadas na aula.

Até o próximo módulo!